package com.ffcc.fitness.like.service;

import com.ffcc.fitness.like.pojo.dto.LikeDTO;
import com.ffcc.fitness.like.pojo.vo.LikeVO;

/**
 * 点赞服务接口
 */
public interface LikeService {
    
    /**
     * 切换点赞状态（点赞或取消点赞）
     * @param likeDTO 点赞操作参数
     */
    void toggleLike(LikeDTO likeDTO);
    
    /**
     * 获取点赞信息（点赞数量和当前用户点赞状态）
     * @param userId 用户ID
     * @param targetId 目标ID
     * @param targetType 目标类型
     * @return 点赞信息
     */
    LikeVO getLikeInfo(Long userId, Long targetId, Integer targetType);
    
    /**
     * 获取目标的点赞数量
     * @param targetId 目标ID
     * @param targetType 目标类型
     * @return 点赞数量
     */
    Long getLikeCount(Long targetId, Integer targetType);
    
    /**
     * 检查用户是否已点赞
     * @param userId 用户ID
     * @param targetId 目标ID
     * @param targetType 目标类型
     * @return 是否已点赞
     */
    Boolean isLiked(Long userId, Long targetId, Integer targetType);
}